package com.ssy.lingxi.common.constant.member;

import java.util.Arrays;

/**
 * 会员注册资料字段标签枚举
 * @author 万宁
 * @version 2.0.0
 * @date 2020-10-19
 */
public enum MemberConfigTagEnum {
    /**
     * 会员名称 - 1
     */
    Member_Name(1, "会员名称"),

    /**
     * 会员手机号 - 2
     */
    Member_Phone(2, "会员手机号"),

    /**
     * 会员身份证号 - 3
     */
    Member_Identity_Card(3, "会员身份证号"),

    /**
     * 会员身份证正面 - 4
     */
    Member_Identity_Card_Front(4, "会员身份证正面"),

    /**
     * 会员身份证反面 - 5
     */
    Member_Identity_Card_Back(5, "会员身份证反面"),

    /**
     * 法人姓名 - 6
     */
    Legal_Person_Name(6, "法人姓名"),

    /**
     * 法人手机号 - 7
     */
    Legal_Person_Phone(7, "法人手机号"),

    /**
     * 法人身份证号 - 8
     */
    Legal_Person_Identity_Card(8, "法人身份证号"),

    /**
     * 法人身份证正面 - 9
     */
    Legal_Person_Identity_Card_Front(9, "法人身份证正面"),

    /**
     * 法人身份证反面 - 10
     */
    Legal_Person_Identity_Card_Back(10, "法人身份证反面"),

    /**
     * 统一信用代码 - 11
     */
    Unified_Credit_Code(11, "统一信用代码"),

    /**
     * 注册资本 - 12
     */
    Registered_capital(12, "注册资本"),

    /**
     * 成立日期 - 13
     */
    Establishment_Date(13, "成立日期"),

    /**
     * 营业执照 - 14
     */
    Business_Licence(14, "营业执照"),

    /**
     * 注册地址（省、市、区） - 15
     */
    Register_Area(15, "注册地址(省、市、区)"),

    /**
     * 注册地址（详细地址）
     */
    Register_Address(16, "注册地址(详细地址)");

    MemberConfigTagEnum(Integer code, String tagName) {
        this.code = code;
        this.tagName = tagName;
    }

    /**
     * 标签枚举值
     */
    private Integer code;

    /**
     * 标签名称
     */
    private String tagName;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getTagName() {
        return tagName;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }

    /**
     * 判断是否为字段标签的枚举值
     * @param code 整数类型
     * @return true:是 false:否
     */
    public static Boolean isEnumCode(Integer code) {
        return Arrays.stream(MemberConfigTagEnum.values()).anyMatch(memberConfigTagEnum -> memberConfigTagEnum.getCode().equals(code));
    }

    /**
     * 根据枚举值，获得标签名称
     * @param code 整数枚举值
     * @return 如果包含枚举，返回标签名称，否则返回空字符串
     */
    public static String findTagName(Integer code) {
        MemberConfigTagEnum tagEnum = Arrays.stream(MemberConfigTagEnum.values()).filter(memberConfigTagEnum -> memberConfigTagEnum.getCode().equals(code)).findFirst().orElse(null);
        return tagEnum == null ? "" : tagEnum.getTagName();
    }

    /**
     * 根据枚举值，转换枚举实例
     * @param code 整数枚举值
     * @return 如果包含枚举，返回实例，否则返回Null
     */
    public static MemberConfigTagEnum parseCode(Integer code) {
        return Arrays.stream(MemberConfigTagEnum.values()).filter(memberConfigTagEnum -> memberConfigTagEnum.getCode().equals(code)).findFirst().orElse(null);
    }
}
